aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--examples/cl_sgemm.cpp48
-rw-r--r--utils/Utils.h22
2 files changed, 37 insertions, 33 deletions
diff --git a/examples/cl_sgemm.cpp b/examples/cl_sgemm.cpp
index 8808f7ebf5..e1729a85b0 100644
--- a/examples/cl_sgemm.cpp
+++ b/examples/cl_sgemm.cpp
@@ -31,14 +31,16 @@
#include "arm_compute/runtime/CL/CLTuner.h"
#include "utils/Utils.h"
+#include <cstdlib>
+
using namespace arm_compute;
using namespace utils;
void main_cl_sgemm(int argc, const char **argv)
{
NPYLoader npy0, npy1, npy2;
- CLImage src0, src1, src2, dst;
- int alpha = 1, beta = 0;
+ CLTensor src0, src1, src2, dst;
+ float alpha = 1.0f, beta = 0.0f;
CLTuner tuner;
CLScheduler::get().default_init(&tuner);
@@ -53,21 +55,21 @@ void main_cl_sgemm(int argc, const char **argv)
{
// Print help
std::cout << "Usage: 1) ./build/cl_sgemm input_matrix_1.npy input_matrix_2.npy [input_matrix_3.npy] [alpha = 1] [beta = 0]\n";
- std::cout << " 2) ./build/cl_sgemm M N K [alpha = 1] [beta = 0]\n\n";
- std::cout << "Too few or no input_matrices provided, creating random 5x7, 3x5 and 3x7 matrices\n\n";
+ std::cout << " 2) ./build/cl_sgemm M N K [alpha = 1.0f] [beta = 0.0f]\n\n";
+ std::cout << "Too few or no input_matrices provided. Using M=7, N=3, K=5, alpha=1.0f and beta=0.0f\n\n";
- src0.allocator()->init(TensorInfo(5, 7, Format::F32));
- src1.allocator()->init(TensorInfo(3, 5, Format::F32));
- src2.allocator()->init(TensorInfo(3, 7, Format::F32));
+ src0.allocator()->init(TensorInfo(TensorShape(5U, 7U), 1, DataType::F32));
+ src1.allocator()->init(TensorInfo(TensorShape(3U, 5U), 1, DataType::F32));
+ src2.allocator()->init(TensorInfo(TensorShape(3U, 7U), 1, DataType::F32));
}
else
{
- if(stream.good()) /* case file1.npy file2.npy [file3.npy] [alpha = 1] [beta = 0] */
+ if(stream.good()) /* case file1.npy file2.npy [file3.npy] [alpha = 1.0f] [beta = 0.0f] */
{
npy0.open(argv[1]);
- npy0.init_tensor(src0, Format::F32);
+ npy0.init_tensor(src0, DataType::F32);
npy1.open(argv[2]);
- npy1.init_tensor(src1, Format::F32);
+ npy1.init_tensor(src1, DataType::F32);
if(argc > 3)
{
@@ -77,52 +79,54 @@ void main_cl_sgemm(int argc, const char **argv)
if(stream.good()) /* case with third file */
{
npy2.open(argv[3]);
- npy2.init_tensor(src2, Format::F32);
+ npy2.init_tensor(src2, DataType::F32);
if(argc > 4)
{
- alpha = strtol(argv[4], nullptr, 10);
+ // Convert string to float
+ alpha = strtof(argv[4], nullptr);
if(argc > 5)
{
- beta = strtol(argv[5], nullptr, 10);
+ // Convert string to float
+ beta = strtof(argv[5], nullptr);
}
}
}
else /* case without third file */
{
- alpha = strtol(argv[3], nullptr, 10);
+ alpha = strtof(argv[3], nullptr);
if(argc > 4)
{
- beta = strtol(argv[4], nullptr, 10);
+ beta = strtof(argv[4], nullptr);
}
}
}
}
- else /* case M N K [alpha = 1] [beta = 0] */
+ else /* case M N K [alpha = 1.0f] [beta = 0.0f] */
{
size_t M = strtol(argv[1], nullptr, 10);
size_t N = strtol(argv[2], nullptr, 10);
size_t K = strtol(argv[3], nullptr, 10);
- src0.allocator()->init(TensorInfo(K, M, Format::F32));
- src1.allocator()->init(TensorInfo(N, K, Format::F32));
- src2.allocator()->init(TensorInfo(N, M, Format::F32));
+ src0.allocator()->init(TensorInfo(TensorShape(K, M), 1, DataType::F32));
+ src1.allocator()->init(TensorInfo(TensorShape(N, K), 1, DataType::F32));
+ src2.allocator()->init(TensorInfo(TensorShape(N, M), 1, DataType::F32));
if(argc > 4)
{
- alpha = strtol(argv[4], nullptr, 10);
+ alpha = strtof(argv[4], nullptr);
if(argc > 5)
{
- beta = strtol(argv[5], nullptr, 10);
+ beta = strtof(argv[5], nullptr);
}
}
}
}
- init_sgemm_output(dst, src0, src1, Format::F32);
+ init_sgemm_output(dst, src0, src1, DataType::F32);
// Configure function
CLGEMM sgemm;
diff --git a/utils/Utils.h b/utils/Utils.h
index 9d2b517708..9133fd0ac0 100644
--- a/utils/Utils.h
+++ b/utils/Utils.h
@@ -512,16 +512,16 @@ public:
return _fortran_order;
}
- /** Initialise an image's metadata with the dimensions of the NPY file currently open
+ /** Initialise the tensor's metadata with the dimensions of the NPY file currently open
*
* @param[out] tensor Tensor to initialise
- * @param[in] format Format to use for the image
+ * @param[in] dt Data type to use for the tensor
*/
template <typename T>
- void init_tensor(T &tensor, arm_compute::Format format)
+ void init_tensor(T &tensor, arm_compute::DataType dt)
{
ARM_COMPUTE_ERROR_ON(!is_open());
- ARM_COMPUTE_ERROR_ON(format != arm_compute::Format::F32);
+ ARM_COMPUTE_ERROR_ON(dt != arm_compute::DataType::F32);
// Use the size of the input NPY tensor
TensorShape shape;
@@ -531,7 +531,7 @@ public:
shape.set(i, _shape.at(i));
}
- arm_compute::TensorInfo tensor_info(shape, format);
+ arm_compute::TensorInfo tensor_info(shape, 1, dt);
tensor.allocator()->init(tensor_info);
}
@@ -545,7 +545,7 @@ public:
void fill_tensor(T &tensor)
{
ARM_COMPUTE_ERROR_ON(!is_open());
- ARM_COMPUTE_ERROR_ON_FORMAT_NOT_IN(&tensor, arm_compute::Format::F32);
+ ARM_COMPUTE_ERROR_ON_FORMAT_NOT_IN(&tensor, arm_compute::DataType::F32);
try
{
// Map buffer if creating a CLTensor
@@ -582,9 +582,9 @@ public:
}
}
- switch(tensor.info()->format())
+ switch(tensor.info()->data_type())
{
- case arm_compute::Format::F32:
+ case arm_compute::DataType::F32:
{
// Read data
if(tensor.info()->padding().empty())
@@ -607,7 +607,7 @@ public:
break;
}
default:
- ARM_COMPUTE_ERROR("Unsupported format");
+ ARM_COMPUTE_ERROR("Unsupported data type");
}
// Unmap buffer if creating a CLTensor
@@ -875,9 +875,9 @@ void fill_random_tensor(T &tensor, float lower_bound, float upper_bound)
}
template <typename T>
-void init_sgemm_output(T &dst, T &src0, T &src1, arm_compute::Format format)
+void init_sgemm_output(T &dst, T &src0, T &src1, arm_compute::DataType dt)
{
- dst.allocator()->init(TensorInfo(src1.info()->dimension(0), src0.info()->dimension(1), format));
+ dst.allocator()->init(TensorInfo(TensorShape(src1.info()->dimension(0), src0.info()->dimension(1)), 1, dt));
}
} // namespace utils