12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- #include <cmath>
- #include <algorithm>
- #include <iostream>
- #include <vector>
- #include <random>
- #include "StreamFMA.h"
- #include "MaxSLiCInterface.h"
- int main()
- {
- const int size = 400;
- int sizeBytes = size * sizeof(int32_t);
- int32_t *a = (int32_t*) malloc(sizeBytes);
- int32_t *b = (int32_t*) malloc(sizeBytes);
- int32_t *c = (int32_t*) malloc(sizeBytes);
- // TODO Generate input data
- for(int i = 0; i < size; ++i)
- {
- a[i] = random() % 100;
- b[i] = random() % 100;
- }
- max_file_t *maxfile = StreamFMA_init();
- max_engine_t *engine = max_load(maxfile, "*");
- max_actions_t* act = max_actions_init(maxfile, NULL);
- max_set_ticks (act, "StreamFMAKernel", size);
- max_queue_input(act, "a", a, size * sizeof(int32_t));
- max_queue_input(act, "b", b, size * sizeof(int32_t));
- max_queue_output(act, "output", c, size * sizeof(int32_t));
- max_run(engine, act);
- max_actions_free(act);
- max_unload(engine);
- int ret = 0;
- // TODO Use result data
- for(std::size_t i = 0; i < size; ++i)
- {
- int32_t ref =a[i] + b[i];
- if (c[i] != ref)
- {
- std::cout << "Invalid Output at index " << i << ": " << std::endl;
- std::cout << " reference: " << ref << std::endl;
- std::cout << " value: " << c[i] << std::endl;
- ret = 1;
- break;
- }
- }
- if(0 == ret)
- {
- std::cout << "All " << size << " values calculated correctly on the DFE!" << std::endl;
- }
- std::cout << "Done." << std::endl;
- return ret;
- }
|