MCPcopy Create free account
hub / github.com/antirez/ds4 / dist_write_activation_payload

Function dist_write_activation_payload

ds4_distributed.c:925–964  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

923}
924
925static int dist_write_activation_payload(
926 int fd,
927 const float *src,
928 uint64_t values,
929 uint32_t bits) {
930 bits = dist_activation_bits_or_default(bits);
931 if (!dist_activation_bits_valid(bits)) return -1;
932 if (values == 0) return 0;
933 if (!src) return -1;
934 if (bits == 32u) {
935 uint32_t bytes = 0;
936 if (!dist_activation_wire_bytes(bits, values, &bytes)) return -1;
937 return dist_write_full(fd, src, bytes);
938 }
939
940 const uint64_t max_values = 1024u * 1024u;
941 uint64_t cap = values < max_values ? values : max_values;
942 void *buf = malloc((size_t)cap * (size_t)(bits / 8u));
943 if (!buf) return -1;
944 uint64_t done = 0;
945 int rc = 0;
946 while (done < values) {
947 uint64_t n = values - done;
948 if (n > cap) n = cap;
949 if (bits == 16u) {
950 uint16_t *dst = buf;
951 for (uint64_t i = 0; i < n; i++) dst[i] = dist_f32_to_f16(src[done + i]);
952 } else {
953 uint8_t *dst = buf;
954 for (uint64_t i = 0; i < n; i++) dst[i] = dist_f32_to_f8_e4m3(src[done + i]);
955 }
956 if (dist_write_full(fd, buf, (size_t)n * (size_t)(bits / 8u)) != 0) {
957 rc = -1;
958 break;
959 }
960 done += n;
961 }
962 free(buf);
963 return rc;
964}
965
966static int dist_decode_activation_payload(
967 const void *wire,

Callers 2

dist_send_work_resultFunction · 0.85
dist_send_work_frameFunction · 0.85

Calls 6

dist_write_fullFunction · 0.85
dist_f32_to_f16Function · 0.85
dist_f32_to_f8_e4m3Function · 0.85

Tested by

no test coverage detected