Fixed an issue where the xAMAX tester would incorrectly report failures when testing against CBLAS

This commit is contained in:
cnugteren 2016-05-08 18:28:01 +02:00
parent eaf1de5745
commit 3b81ee2c08
2 changed files with 11 additions and 8 deletions

View file

@ -274,6 +274,9 @@ def wrapper_cblas(routines):
postfix += "_sub"
indent += " "
extra_argument += ",\n"+indent+"reinterpret_cast<return_pointer_"+flavour.buffertype[:-1]+">(&"+output_buffer+"_buffer["+output_buffer+"_offset])"
elif output_buffer in routine.IndexBuffers():
assignment = "((int*)&"+output_buffer+"_buffer[0])["+output_buffer+"_offset] = "
indent += " "*len(assignment)
else:
assignment = output_buffer+"_buffer["+output_buffer+"_offset]"
if (flavour.name in ["Sc","Dz"]):

View file

@ -378,26 +378,26 @@ void cblasXasum(const size_t n,
void cblasXamax(const size_t n,
std::vector<float>& imax_buffer, const size_t imax_offset,
const std::vector<float>& x_buffer, const size_t x_offset, const size_t x_inc) {
imax_buffer[imax_offset] = cblas_isamax(n,
&x_buffer[x_offset], static_cast<int>(x_inc));
((int*)&imax_buffer[0])[imax_offset] = cblas_isamax(n,
&x_buffer[x_offset], static_cast<int>(x_inc));
}
void cblasXamax(const size_t n,
std::vector<double>& imax_buffer, const size_t imax_offset,
const std::vector<double>& x_buffer, const size_t x_offset, const size_t x_inc) {
imax_buffer[imax_offset] = cblas_idamax(n,
&x_buffer[x_offset], static_cast<int>(x_inc));
((int*)&imax_buffer[0])[imax_offset] = cblas_idamax(n,
&x_buffer[x_offset], static_cast<int>(x_inc));
}
void cblasXamax(const size_t n,
std::vector<float2>& imax_buffer, const size_t imax_offset,
const std::vector<float2>& x_buffer, const size_t x_offset, const size_t x_inc) {
imax_buffer[imax_offset] = cblas_icamax(n,
reinterpret_cast<const float*>(&x_buffer[x_offset]), static_cast<int>(x_inc));
((int*)&imax_buffer[0])[imax_offset] = cblas_icamax(n,
reinterpret_cast<const float*>(&x_buffer[x_offset]), static_cast<int>(x_inc));
}
void cblasXamax(const size_t n,
std::vector<double2>& imax_buffer, const size_t imax_offset,
const std::vector<double2>& x_buffer, const size_t x_offset, const size_t x_inc) {
imax_buffer[imax_offset] = cblas_izamax(n,
reinterpret_cast<const double*>(&x_buffer[x_offset]), static_cast<int>(x_inc));
((int*)&imax_buffer[0])[imax_offset] = cblas_izamax(n,
reinterpret_cast<const double*>(&x_buffer[x_offset]), static_cast<int>(x_inc));
}
// =================================================================================================