Skip to content

error C2039: "ComputeV2": is not a member of "FurthestSamplingKernel" #25049

Open
@zhoujinhai

Description

@zhoujinhai

Describe the issue

After implementing the custom operator based on reference A, I received an error message in version 1.20.0, but in version 1.14.1, it can be resolved

error:
error C2039: "ComputeV2": is not a member of "FurthestSamplingKernel"

And I find the KernelComputeV2 has set to nullptr In onnxruntime_cxx_api.h

Image

how to modify it for compatibility onnxruntime with 1.20.0

To reproduce

  • code
struct FurthestSamplingKernel {
    FurthestSamplingKernel(const OrtApi& ort_api, const OrtKernelInfo* /*info*/) : ort_(ort_api) {
	}
    void Compute(OrtKernelContext* context); 

private:
    const OrtApi& ort_;
};
struct FurthestSamplingOp : Ort::CustomOpBase<FurthestSamplingOp, FurthestSamplingKernel> {
	explicit FurthestSamplingOp(const char* provider) : provider_(provider) {}

	void* CreateKernel(const OrtApi& api, const OrtKernelInfo* info) const { 
		return new FurthestSamplingKernel(api, info);
	};
	const char* GetName() const { return "FurthestSampling"; };

	const char* GetExecutionProviderType() const { return provider_; };

	size_t GetInputTypeCount() const { return 3; };
	ONNXTensorElementDataType GetInputType(size_t index/*index*/) const {
		if (index == 0) {
			return ONNX_TENSOR_ELEMENT_DATA_TYPE_FLOAT;
		}
		else if (index == 1) { 
			return ONNX_TENSOR_ELEMENT_DATA_TYPE_INT32;
		}
        else if (index == 2) { 
            return ONNX_TENSOR_ELEMENT_DATA_TYPE_INT32;
        }
		return ONNX_TENSOR_ELEMENT_DATA_TYPE_UNDEFINED;
	};
	OrtCustomOpInputOutputCharacteristic GetInputCharacteristic(size_t index) const {
		/*if (index == 1)
			return OrtCustomOpInputOutputCharacteristic::INPUT_OUTPUT_OPTIONAL;*/
		return OrtCustomOpInputOutputCharacteristic::INPUT_OUTPUT_REQUIRED;
	}

	size_t GetOutputTypeCount() const { return 1; };
	ONNXTensorElementDataType GetOutputType(size_t /*index*/) const {
		return ONNX_TENSOR_ELEMENT_DATA_TYPE_INT32;
	};
	OrtCustomOpInputOutputCharacteristic GetOutputCharacteristic(size_t /*index*/) const {
		return OrtCustomOpInputOutputCharacteristic::INPUT_OUTPUT_REQUIRED;
	}

private:
	const char* provider_;
};
  • model

Image

Urgency

No response

Platform

Windows

OS Version

Window10

ONNX Runtime Installation

Built from Source

ONNX Runtime Version or Commit ID

1.20.0

ONNX Runtime API

Python

Architecture

X64

Execution Provider

Default CPU

Execution Provider Library Version

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions